﻿//-----------------------------------------------------------------------
// <copyright file="IProblemFactory.cs" company="Numbrella foundation">
// Copyright (c) Numbrella foundation. All rights reserved.
// </copyright>
//-----------------------------------------------------------------------

namespace Numbrella.Core
{
	using Numbrella.Interaction;
	
	/// <summary>
	/// Represents factory for creating <see cref="IProblem"/> instances. When Numbrella client has to post problem
	/// to the tracker, it first looks through the problem assembly for the <see cref="IProblemFactory"/> implementation.
	/// When client founds it, it uses factory to create new <see cref="IProblem"/> instance.
	/// If factory is not defined in problem assembly, problem solving becomes impossible.
	/// </summary>
	public interface IProblemFactory
	{
		/// <summary>
		/// Creates new instance of class implementing <see cref="IProblem"/> interface.
		/// </summary>
		/// <returns>New problem instance.</returns>
		ProblemBase CreateProblem();
	}
}
